package com.ly.system.service;

import com.alibaba.fastjson.JSONObject;
import com.ly.common.core.bean.R;
import com.ly.common.core.bean.dto.SmsDTO;
import com.ly.system.system.bean.dto.LoginDTO;
import com.ly.system.system.bean.vo.IndexVisitInfoVO;
import org.springframework.web.bind.annotation.RequestBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 用户登录-服务类
 *
 * @author luoyun
 * @Date: 2025/5/07 20:45
 * @Note:
 */
public interface ILoginService {

    /**
     * 登录
     *
     * @param dto
     * @return
     */
    R login(LoginDTO dto);

    /**
     * 登录-phone
     *
     * @param dto
     * @return
     */
    R phoneLogin(SmsDTO dto);

    /**
     * 获取用户信息-vue3
     */
    R getUserInfo(HttpServletRequest request);

    /**
     * 退出登录
     */
    R logout(HttpServletRequest request);

    /**
     * 获取访问统计总量
     *
     * @return
     */
    R loginInfo();

    /**
     * 获取一周访问量信息
     *
     * @return
     */
    R<List<IndexVisitInfoVO>> visitInfo();

    /**
     * 获取加密key和iv
     *
     * @return
     */
    R getEncryptedString();

    /**
     * 后台生成图形验证码 ：有效
     */
    R<String> randomImage(String key);

    /**
     * 图形验证码
     *
     * @param loginDTO
     * @return
     */
    R checkCaptcha(@RequestBody LoginDTO loginDTO);

    /**
     * 登录二维码
     */
    R getLoginQrcode();

    /**
     * 扫码二维码
     */
    R scanLoginQrcode(String qrcodeId, String token);

    /**
     * 获取用户扫码后保存的token
     */
    R getQrcodeToken(String qrcodeId);

    /**
     * 发送短信验证码接口(修改密码)
     *
     * @param jsonObject
     * @return
     */
    R<String> sendSms(JSONObject jsonObject);

    /**
     * 图形验证码
     *
     * @param loginDTO
     * @return
     */
    R<String> smsCheckCaptcha(LoginDTO loginDTO, HttpServletRequest request);
}
